package com.stargate.soft.transaction.personne;

import java.sql.SQLException;
import java.util.ArrayList;

import com.stargate.bd.ConnectionBD;
import com.stargate.bd.bean.Affectation;
import com.stargate.bd.bean.Badge;
import com.stargate.bd.bean.Etat;
import com.stargate.bd.bean.Personne;
import com.stargate.bd.dao.DAOCreator;
import com.stargate.bd.dao.factory.AffectationDAO;
import com.stargate.bd.dao.factory.BadgeDAO;
import com.stargate.bd.dao.factory.PersonneDAO;

public class CreerPersonne {

	private Personne personne;
	private Badge badge;
	private Affectation affectation;

	public CreerPersonne() throws SQLException {
		ConnectionBD.setSerializable();
		init();
		ConnectionBD.commit();
	}

	private void init() throws SQLException {
		// saisie d'une personne au clavier
		personne = DAOCreator.createPersonne();

		// récupération d'un badge non affecté sinon création d'un badge
		BadgeDAO badgeDAO = new BadgeDAO();
		ArrayList<Badge> badgesNonAffectes = badgeDAO.getBadgesNonAffectes();
		// insertion ou activation du badge en BD
		if (badgesNonAffectes.isEmpty()) {
			badge = new Badge(Etat.ENABLE);
			badgeDAO.insert(badge);
			badge.setNumBadge(badgeDAO.getSeqNumBadge());
		} else {
			badge = badgesNonAffectes.get(0);
			badge.enable();
			badgeDAO.update(badge);
		}

		// saisie des dates d'affectation du badge
		affectation = DAOCreator.createAffectation(personne, badge);

		// insertion de la personne en BD
		PersonneDAO personneDAO = new PersonneDAO();
		personneDAO.insert(personne);

		// insertion de l'affectation en BD
		AffectationDAO affectationDAO = new AffectationDAO();
		affectationDAO.insert(affectation);
	}

	public Personne getPersonne() {
		return personne;
	}

	public Badge getBadge() {
		return badge;
	}

	public Affectation getAffectation() {
		return affectation;
	}
}
